
#ifndef __LIBERTY_LIBRARY_IMUTEX_H__
#define __LIBERTY_LIBRARY_IMUTEX_H__

#include <Liberty3D/Liberty3D.h>
#include <Liberty3D/Library/IExclusiveLock.h>
#include <Liberty3D/Library/ISharedLock.h>

namespace Liberty { namespace Library {

    class IMutex {
    public:
        virtual ~IMutex() {}

    public:
        virtual IExclusiveLock* lock() = 0;
    };

    class ISharedMutex : public IMutex {
    public:
        virtual ISharedLock* lockShared() = 0;
    };
}}

#endif
